#ifndef __ADF4351_
#define __ADF4351_

#include <stm32f10x.h>
#include "delay.h"
#include "gpio.h"

/*******************串行通信协议********************/
/*0x01   0x00 0x04   0x01 0x02 0x03 0x04 0x03      */
/*起始位 类型 字节数 -------数据位------ ADD8校验位*/
/*类型：01 写寄存器                                */
/*      02 设置输出频率                            */
/*      03 设置输出功率                            */
/*      04 设置衰减器衰减比                        */
/***************************************************/

//高电平使能
#define ADF_CE_HIGH GPIO_SetBits(GPIOA,GPIO_Pin_3)
#define ADF_CE_LOW  GPIO_ResetBits(GPIOA,GPIO_Pin_3)
//加载使能 低电平开始写数据 高电平结束
#define ADF_LE_HIGH GPIO_SetBits(GPIOA,GPIO_Pin_4)
#define ADF_LE_LOW  GPIO_ResetBits(GPIOA,GPIO_Pin_4)
//数据
#define ADF_DATA_HIGH GPIO_SetBits(GPIOA,GPIO_Pin_5)
#define ADF_DATA_LOW  GPIO_ResetBits(GPIOA,GPIO_Pin_5)
//时钟
#define ADF_CLK_HIGH GPIO_SetBits(GPIOA,GPIO_Pin_6)
#define ADF_CLK_LOW  GPIO_ResetBits(GPIOA,GPIO_Pin_6)
//数字反馈信号 高电平表示锁频 
#define ADF_MUX_DIGITAL GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_7)

//ADF4351寄存器配置
struct PllConfigType
{
    uint8_t power;
    uint32_t R0 ,R1, R2, R3, R4, R5;
};
extern struct PllConfigType PLLConfig;

union DATA_PACKET
{
    uint32_t payload;
    uint8_t  buffer[4];
};

extern union DATA_PACKET ADF;

void ADF4351_Init(void);
void ADF4351_Write(uint32_t data);
void ADF4351_Freq(uint32_t freq);
void ADF4351_Power(uint8_t level);

#endif
